package com.xzs.kit.base.dao;

import java.util.List;
import java.util.Map;

/**
 * @author : Victor.Xiao
 * @date : 2017/12/02 14:29
 * @description :
 */
public interface BaseDao<Model> {
    /**
     * @description : 查
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param id id
     * @return
     */
    Model findById(String id);

    /**
     * @description : 查
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param ids ids
     * @return
     */
    List<Model> findBatch(List<String> ids);

    /**
     * @description : 改
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param model model
     * @return
     */
    void update(Model model);

    /**
     * @description : 改
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param models model
     * @return
     */
    void updateBatch(List<Model> models);

    /**
     * @description : 增
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param model model
     * @return
     */
    void add(Model model);

    /**
     * @description : 增
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param models model
     * @return
     */
    void addBatch(List<Model> models);

    /**
     * @description : 分页
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:38
     * @param params
     */
    List<Model> findByPage(Map<String, Object> params);

    /**
     * @description : 分页
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:38
     * @param params
     */
    List<Model> findByOffset(Map<String, Object> params);

    /**
     * @description : 删
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:45
     * @param id
     */
    void deleteById(String id);

    /**
     * @description : 删
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:45
     * @param ids
     */
    void deleteBatch(List<String> ids);

    /**
     * @description : 删
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:45
     * @param params params
     */
    void deleteByParam(Map<String, Object> params);

}
